#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
#ifdef __cplusplus
extern "C" {
#endif
btCollisionDispatcher* bullet_NewbtCollisionDispatcher(btCollisionConfiguration* collisionConfiguration){
	btCollisionConfiguration * c_arg_collisionConfiguration=(btCollisionConfiguration *)(void*)(collisionConfiguration);
	btCollisionDispatcher* wrap_out = new btCollisionDispatcher(c_arg_collisionConfiguration);
	return wrap_out;
}

void bullet_btCollisionDispatcher_defaultNearCallback(btCollisionDispatcher* c_this,btBroadphasePair* collisionPair,btCollisionDispatcher* dispatcher,btDispatcherInfo* dispatchInfo){
	btBroadphasePair& c_arg_collisionPair=(btBroadphasePair&)(*collisionPair);
	btCollisionDispatcher& c_arg_dispatcher=(btCollisionDispatcher&)(*dispatcher);
	btDispatcherInfo const& c_arg_dispatchInfo=(btDispatcherInfo const&)(*dispatchInfo);
	c_this->defaultNearCallback(c_arg_collisionPair,c_arg_dispatcher,c_arg_dispatchInfo);
}

int bullet_btCollisionDispatcher_getDispatcherFlags(btCollisionDispatcher* c_this){
	int c_out = c_this->getDispatcherFlags();
	int wrap_out = (c_out);
	return wrap_out;
}

btPersistentManifold* bullet_btCollisionDispatcher_getManifoldByIndexInternal(btCollisionDispatcher* c_this,int index){
	int c_arg_index=index;
	btPersistentManifold const * c_out = c_this->getManifoldByIndexInternal(c_arg_index);
	btPersistentManifold* wrap_out = (btPersistentManifold*)(void*)(c_out);
	return wrap_out;
}

void bullet_btCollisionDispatcher_registerClosestPointsCreateFunc(btCollisionDispatcher* c_this,int proxyType0,int proxyType1,btCollisionAlgorithmCreateFunc* createFunc){
	int c_arg_proxyType0=proxyType0;
	int c_arg_proxyType1=proxyType1;
	btCollisionAlgorithmCreateFunc * c_arg_createFunc=(btCollisionAlgorithmCreateFunc *)(void*)(createFunc);
	c_this->registerClosestPointsCreateFunc(c_arg_proxyType0,c_arg_proxyType1,c_arg_createFunc);
}

void bullet_btCollisionDispatcher_registerCollisionCreateFunc(btCollisionDispatcher* c_this,int proxyType0,int proxyType1,btCollisionAlgorithmCreateFunc* createFunc){
	int c_arg_proxyType0=proxyType0;
	int c_arg_proxyType1=proxyType1;
	btCollisionAlgorithmCreateFunc * c_arg_createFunc=(btCollisionAlgorithmCreateFunc *)(void*)(createFunc);
	c_this->registerCollisionCreateFunc(c_arg_proxyType0,c_arg_proxyType1,c_arg_createFunc);
}

void bullet_btCollisionDispatcher_setCollisionConfiguration(btCollisionDispatcher* c_this,btCollisionConfiguration* config){
	btCollisionConfiguration * c_arg_config=(btCollisionConfiguration *)(void*)(config);
	c_this->setCollisionConfiguration(c_arg_config);
}

void bullet_btCollisionDispatcher_setDispatcherFlags(btCollisionDispatcher* c_this,int flags){
	int c_arg_flags=flags;
	c_this->setDispatcherFlags(c_arg_flags);
}

#ifdef __cplusplus
}
#endif
